<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
class NguoidungsController extends AppController {
    var $name = 'Nguoidungs';
    var $helpers = array('Html','Session');
    var $components = array( 'Session', 'Common', 'Auth');
    //var $components = array( 'Session', 'Common');

    function beforeFilter(){
        parent::beforeFilter();
        $this->Auth->allow(array('admin_dangnhap'));
        $controller = $this->params['controller'];
        $action = $this->params['action'];
        if(isset($controller)){
            $strControllerName =  "<a href='/admin/".$controller."' style='color:#EF7802;text-decoration:none;'>Người dùng </a>";
        }
        if(isset($action)){
            if($action == "admin_index"){
                $strActionName = " » Tìm kiếm";
            }elseif($action == "admin_them"){
                $strActionName = " » Thêm";
            }elseif($action == "admin_sua"){
                $strActionName = " » Chỉnh sửa";
            }elseif($action == "admin_xoa") {
                $strActionName = " » Xóa";
            }elseif($action == "admin_xem") {
                $strActionName = " » Xem thông tin";
            }elseif($action == "admin_thongtin") {
                $strActionName = " » Thay đổi mật khẩu";
            }else{
               $strActionName = "";
            }
        }

        //Add breadcrumb
        $route = $strControllerName. $strActionName;

        $status = array(
            'hoatdong' => 'Hiển thị',
            'vohieu' => 'Ẩn'
        );

        $this->set('title_for_layout','Quản trị người dùng');
        $this->set('strControllerName',$controller);
        $this->set('status', $status);
        $this->set('route', $route);
        $this->set('group_system', 1);
    }

    public function admin_index(){

        if(!empty($_GET)){
            if(strlen($_GET['tendaydu']) > 0)
            {
                $search['tendaydu'] = $_GET['tendaydu'];
                $cond['Nguoidung.tendaydu'] = trim($this->Common->html($_GET['tendaydu']));
            }

            if(strlen($_GET['tungay']) > 0){

                $search['tungay'] = $_GET['tungay'];
                if($this->Common->is_date($_GET['tungay']))
                {
                    $cond['Nguoidung.ngaytao >='] = $this->Common->date_convert($_GET['tungay']) . " 00:00:00";
                }
            }

            if(strlen($_GET['denngay']) > 0){
                $search['denngay'] = $_GET['denngay'];
                if($this->Common->is_date($_GET['denngay']))
                {
                    $cond['Nguoidung.ngaysua <='] = $this->Common->date_convert($_GET['denngay']) . " 00:00:00";
                }
            }

            if($_GET['trangthai'] != 'tatca'){
                $search['trangthai'] = $_GET['trangthai'];
                $cond['Nguoidung.trangthai'] = $_GET['trangthai'];
            }

            if(!empty($cond)){
                $this->paginate = array(
                    'conditions' => $cond,
                    'order' => 'Nguoidung.ngaytao desc',
                    'limit' => 20,
                );
                $total = $this->Nguoidung->find('count', array(
                    'conditions' => $cond,
                    'contain' => false
                ));
            }else{
                $this->paginate = array(
                    'order' => 'Nguoidung.ngaytao desc',
                    'limit' => 20,
                );

                $total = $this->Nguoidung->find('count', array(
                    'contain' => false
                ));
            }
        }else{
            $limit = 20;
            $this->paginate = array(
                'order' => 'Nguoidung.ngaytao desc',
                'limit' => $limit,
            );

            $total = $this->Nguoidung->find('count', array(
                'contain' => false
            ));
        }



        //Tìm ra tất cả dữ liệu với điều kiện
        $datas = $this->paginate();
        //Gán dữ liệu xuống view
        $this->set('datas', $datas );
        $this->set('total', $total );
        if(!empty($search)){
            $this->set('search',$search);
        }

        $this->layout = 'admin';
    }

    public function _check_input($tmp_data = NULL){
        $save = $errors = array();
        $check_enough_field = true;
        if( isset( $tmp_data['tendangnhap'] ) )
        {
            if( strlen( $tmp_data['tendangnhap'] ) > 0 )
            {
                if($this->Common->isAlphabet($tmp_data['tendangnhap'])){
                    $check = $this->_check_exist_tendangnhap($tmp_data['tendangnhap']);
                    if(empty($check)){
                        $save['tendangnhap'] = $tmp_data['tendangnhap'];
                    }else{
                        $errors['tendangnhap'] = array( 'Tên đăng nhập đã tồn tại.' );
                    }
                }else{
                    $errors['tendangnhap'] = array( 'Tên đăng nhập gồm ký tự không dấu.' );
                }
            }else{
                $errors['tendangnhap'] = array( 'Vui lòng nhập tên đăng nhập.' );
            }
        }else{
                $check_enough_field = false;
        }

        if( isset( $tmp_data['tendaydu'] ) ){
            if( strlen( $tmp_data['tendaydu'] ) == 0 ){
                $errors['tendaydu'] = array( 'Vui lòng nhập tên đầy đủ.' );
            }else{
                $save['tendaydu'] = $tmp_data['tendaydu'];
            }
        }else{
            $check_enough_field = false;
        }

        if( isset( $tmp_data['matkhau'] ) )
        {
            if( strlen( $tmp_data['matkhau'] ) > 0 )
            {
                $save['matkhau'] = $this->Auth->password( $tmp_data['matkhau'] );
            }else{
                $errors['matkhau'] = array( 'Vui lòng nhập mật khẩu.' );
            }
        }else{
            $check_enough_field = false;
        }

        if( isset( $tmp_data['xacnhanmatkhau'] ) )
        {
            if( strlen( $tmp_data['xacnhanmatkhau'] ) > 0 )
            {
                if($tmp_data['xacnhanmatkhau'] != $tmp_data['matkhau']){
                    $errors['matkhau'] = array( 'Mật khẩu và xác nhận mật khẩu không trùng.' );
                }
            }else{
                $errors['xacnhanmatkhau'] = array( 'Vui lòng nhập xác nhận mật khẩu.' );
            }
        }else{
            $check_enough_field = false;
        }

        if( strlen( $tmp_data['didong'] ) > 0 ){
            if( is_numeric( $tmp_data['didong'] ) ){
                $save['didong'] = $tmp_data['didong'];
            }else{
                $errors['didong'] = array( 'Số điện thoại phải là kiểu số.' );
            }
        }

        if( strlen( $tmp_data['email'] ) > 0 ){
            if( $this->Common->isEmail( $tmp_data['email'] ) ){
                $save['email'] = $tmp_data['email'];
            }else{
                $errors['email'] = array( 'Địa chỉ email sai.' );
            }
        }

        return array(
            'save' => $save,
            'errors' => $errors,
            'check_enough_field' => $check_enough_field
        );
    }

    public function _check_exist_tendangnhap( $nguoidung_tendangnhap = NULL ){
        $datas = $this->Nguoidung->find('first', array(
            'fields' => array('id', 'tendangnhap'),
            'conditions' => array(
                'Nguoidung.tendangnhap' => $nguoidung_tendangnhap
            ),
            'contain' => false
        ));
        return $datas;
    }


    public function admin_them(){
        if( !empty($this->data) )
        {
            $tmp_data = $this->Common->html($this->data['Nguoidung']);

            $check = $this->_check_input($tmp_data);

            $save = $check['save'];
            $errors = $check['errors'];
            $check_enough_field = $check['check_enough_field'];

            // BAT DAU SAVE VAO DATABASE
            if( empty( $errors ) && $check_enough_field )
            {
                $save['trangthai'] = 'hoatdong';
                $save['ngaytao'] = date('Y-m-d H:i:s');
                $save['ngaysua'] = date('Y-m-d H:i:s');
                $this->Nguoidung->create();
                $saveAll['Nguoidung'] = $save;
                if( $this->Nguoidung->saveAll( $saveAll, array( 'validate' => false ) ) )
                {
                    $this->Session->write( 'message_success', 'Thêm người dùng thành công thành công.' );
                }else{
                    $this->Session->write( 'message_error', 'Thêm người dùng thành công thất bại.' );
                }
            }else{
                $this->Nguoidung->validationErrors = $errors;
            }
        }

        $this->layout = 'admin';
    }

    public function admin_sua($nguoidung_id = null){
        if(!is_numeric($nguoidung_id))die;
        if(!empty($this->data)){
            $arr_Duplicate = $this->data;
            //lọc html trong chuổi nhập vào
            $tmp_data = $this->Common->html($this->data['Nguoidung']);
            $save = $errors = array();

            $check_enough_field = true;

            // KIEM TRA TEN USER
            if( isset( $tmp_data['tendangnhap'] ) )
            {
                if( strlen( $tmp_data['tendangnhap'] ) > 0 )
                {
                    $save['tendangnhap'] = $tmp_data['tendangnhap'];
                }else{
                    $errors['tendangnhap'] = array( 'Vui lòng nhập tên đăng nhập.' );
                }
            }else{
                $check_enough_field = false;
            }

            if(strlen($tmp_data['xacnhanmatkhau']) > 0 && strlen($tmp_data['matkhau']) > 0){
                if($tmp_data['xacnhanmatkhau'] !== $tmp_data['matkhau']){
                    $errors['matkhau'] = array( 'Mật khẩu và xác nhận mật khẩu không trùng nhau.' );
                }else{
                    $save['matkhau'] = $this->Auth->password($tmp_data['matkhau']);
                }
            }else{
                if(strlen($tmp_data['xacnhanmatkhau']) > 0 && strlen($tmp_data['matkhau']) == 0){
                    $errors['matkhau'] = array( 'Mật khẩu và xác nhận mật khẩu không trùng nhau.' );
                }

                if(strlen($tmp_data['xacnhanmatkhau']) == 0 && strlen($tmp_data['matkhau']) > 0){
                    $errors['matkhau'] = array( 'Mật khẩu và xác nhận mật khẩu không trùng nhau.' );
                }
            }

            if( isset( $tmp_data['tendaydu'] ) )
            {
                if( strlen( $tmp_data['tendaydu'] ) == 0 )
                {
                    $errors['tendaydu'] = array( 'Vui lòng nhập tên đầy đủ của người dùng.' );
                }else{
                    $save['tendaydu'] = $tmp_data['tendaydu'];
                }
            }else{
                    $check_enough_field = false;
            }

            if( isset( $tmp_data['email'] ) )
            {
                if( strlen( $tmp_data['email'] ) > 0 )
                {
                    if($this->Common->isEmail($tmp_data['email'])){
                        $save['email'] = $tmp_data['email'];
                    }else{
                        $errors['email'] = array( 'Email không đúng định dạng.' );
                    }
                }else{
                    $errors['email'] = array( 'Vui lòng nhập Email.' );
                }
            }else{
                    $check_enough_field = false;
            }

            if(strlen($tmp_data['didong']) > 0){
                if(is_numeric($tmp_data['didong'])){
                    $save['didong'] = $tmp_data['didong'];
                }else{
                    $errors['didong'] = array( 'Số điện thoại không đúng.' );
                }
            }

            $save['id'] = $nguoidung_id;

            if( empty( $errors ) && $check_enough_field )
            {
                $save['ngaysua'] = date('Y-m-d H:i:s');
                if( $this->Nguoidung->save($save) )
                {
                    $this->Session->write( 'message_success', 'Chỉnh sửa người dùng thành công.' );
                }else{
                    $this->Session->write( 'message_error', 'Chỉnh sửa người dùng thất bại' );
                }
            }else{
                $this->Nguoidung->validationErrors = $errors;
            }
            $this->set('arr_Duplicate',$arr_Duplicate);
        }else{
            $this->data = $this->Nguoidung->find('first', array(
                    'fields' => array( 'id', 'tendangnhap', 'tendaydu', 'didong', 'email' ),
                    'conditions' => array(
                        'Nguoidung.id' => $nguoidung_id,
                    ),
            ));
        }
        $this->layout = 'admin';
    }

    public function admin_xoa(){
        if(!empty( $this->data['selected'] )){
            foreach($this->data['selected'] as $nguoidung_id){
                try{
                    $this->Nguoidung->delete($nguoidung_id);
                }catch(Exception $e){
                    echo 'Caught exception: ',  $e->getMessage(), "\n";die;
                }
            }
            $this->Session->write( 'message_success', 'Xoá người dùng thành công.' );
        }else{
            $this->Session->write( 'message_error', 'Xoá người dùng lỗi.' );
        }
        $this->redirect('/admin/nguoidungs/');
    }

    public function admin_trangthai( $nguoidung_id =  null ){
        if( !is_numeric($nguoidung_id) )die;
        $datas = $this->Nguoidung->find('first', array(
            'fields' => array( 'id', 'tendangnhap','trangthai' ),
            'conditions' => array(
                'Nguoidung.id' => $nguoidung_id
            ),
            'contain' => false
        ));

        if( $datas['Nguoidung']['trangthai'] == 'hoatdong' ){
            $this->set( 'nguoidung_trangthai', 'vohieu' );
            $this->set( 'nguoidung_value', 'Ẩn' );
        }else{
            $this->set( 'nguoidung_trangthai', 'hoatdong' );
            $this->set( 'nguoidung_value', 'Hiển thị' );
        }
        $this->set( 'nguoidung_id', $nguoidung_id );
    }

    public function admin_thaydoitrangthai( $nguoidung_id =  null, $nguoidung_trangthai = null ){
        if( isset($nguoidung_id)  && isset($nguoidung_trangthai) ){
            $save['id'] = $nguoidung_id;
            $save['trangthai'] = $nguoidung_trangthai;
            $save['ngaysua'] = date('Y-m-d H:i:s');
            if($this->Nguoidung->save($save)){
                $this->Session->write( 'message_success', 'Thay đổi trạng thái người dùng thành công.' );
            }else{
                $this->Session->write( 'message_error', 'Thay đổi trạng thái người dùng lỗi.' );
            }
            $this->redirect('/admin/nguoidungs/');
        }else{
            die;
        }
    }

    public function admin_dangnhap(){
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $datas = $this->Nguoidung->find('first', array(
                        'fields' => array('id', 'tendangnhap', 'tendaydu'),
                        'conditions' => array(
                            'Nguoidung.tendangnhap' => $this->data['Nguoidung']['tendangnhap']
                        ),
                        'contain' => false
                    ));
                if(isset($datas['Nguoidung']['id'])){
                    $this->Session->write('nguoidung_id', $datas['Nguoidung']['id']);
                }

                $sql = 'UPDATE nguoidungs SET dangnhapganday = "'. date('Y-m-d H:i:s') . '" WHERE id = "' . $datas['Nguoidung']['id'] . '"';
                $this->Nguoidung->query($sql);
                $this->Session->write('nguoidung_tendangnhap', $this->data['Nguoidung']['tendangnhap']);
                $this->redirect('/admin/nguoidungs/');
            } else{
                $this->Session->write('Tên đăng nhập hoặc mật khẩu không đúng.');
            }
        }
        $this->layout = 'admin';
    }

    public function admin_dangxuat(){
        $this->Session->destroy();
        $this->redirect($this->Auth->logout());
    }

    public function admin_xem( $nguoidung_id =  null ){
        if( !is_numeric($nguoidung_id) )die;
        if( is_numeric($nguoidung_id) ){
            $data = $this->Nguoidung->find('first', array(
                'conditions' => array(
                    'Nguoidung.id' => $nguoidung_id
                ),
            ));
            $this->set('data',$data);
        }
        $this->layout = 'admin';
    }

    public function admin_thongtin( $nguoidung_id =  null ){
        if(!is_numeric($nguoidung_id))die;
        if(!empty($this->data)){
            $tmp_data = $this->Common->html($this->data['Nguoidung']);
            $save = $errors = array();

            $check_enough_field = true;

            if( isset( $tmp_data['matkhaucu'] ) )
            {
                if( strlen( $tmp_data['matkhaucu'] ) > 0 )
                {
                    $data = $this->Nguoidung->find( 'first', array(
                        'conditions' => array(
                            'Nguoidung.matkhau' => $this->Auth->password($tmp_data['matkhaucu'])
                        )
                    ));

                    if( !isset( $data['Nguoidung']['id'] ) ){
                        $errors['matkhaucu'] = array( 'Mật khẩu cũ không khớp.' );
                    }
                }else{
                    $errors['matkhaucu'] = array( 'Vui lòng nhập mật khẩu cũ.' );
                }
            }else{
                $check_enough_field = false;
            }

            if(strlen($tmp_data['xacnhanmatkhau']) > 0 && strlen($tmp_data['matkhaumoi']) > 0){
                if($tmp_data['xacnhanmatkhau'] !== $tmp_data['matkhaumoi']){
                    $errors['matkhaumoi'] = array( 'Mật khẩu mới và xác nhận mật khẩu không trùng nhau.' );
                }else{
                    $save['matkhau'] = $this->Auth->password($tmp_data['matkhaumoi']);
                }
            }else{
                if(strlen($tmp_data['xacnhanmatkhau']) > 0 && strlen($tmp_data['matkhaumoi']) == 0){
                    $errors['matkhaumoi'] = array( 'Mật khẩu và xác nhận mật khẩu không trùng nhau.' );
                }

                if(strlen($tmp_data['xacnhanmatkhau']) == 0 && strlen($tmp_data['matkhaumoi']) > 0){
                    $errors['matkhaumoi'] = array( 'Mật khẩu và xác nhận mật khẩu không trùng nhau.' );
                }

                if(strlen($tmp_data['xacnhanmatkhau']) == 0 && strlen($tmp_data['matkhaumoi']) == 0){
                    $errors['matkhaumoi'] = array( 'Nhập vào mật khẩu mới.' );
                    $errors['xacnhanmatkhau'] = array( 'Nhập vào xác nhận mật khẩu.' );
                }
            }

            $save['id'] = $nguoidung_id;

            if( empty( $errors ) && $check_enough_field  )
            {
                $save['ngaysua'] = date('Y-m-d H:i:s');
                if( $this->Nguoidung->save($save) )
                {
                    $this->Session->write( 'message_success', 'Chỉnh sửa mật khẩu thành công.' );
                }else{
                    $this->Session->write( 'message_error', 'Chỉnh sửa mật khẩu thất bại' );
                }
            }else{
                $this->Nguoidung->validationErrors = $errors;
            }


        }
        $this->layout = 'admin';
    }
}
?>
